﻿using BCCommon.Enums;
using System;

namespace BCEntity.Sim.Admin.Admin
{
    /// <summary>
    /// 员工
    /// </summary>
    public class AdminEntity
    {
        /// <summary>
        /// 员工Id
        /// </summary>
        public long AdminId { get; set; }

        /// <summary>
        /// 员工登录名
        /// </summary>
        public string LoginName { get; set; }

        /// <summary>
        /// 员工登录密码
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// 员工姓名
        /// </summary>
        public string FullName { get; set; }
        /// <summary>
        /// 是否为超级系统账号
        /// </summary>
        public bool IsSystemAccount { get; set; }
        /// <summary>
        /// 是否主账号
        /// </summary>
        public bool IsMain { get; set; }
        /// <summary>
        /// 公司Id
        /// </summary>
        public int CompanyId { get; set; }
        /// <summary>
        /// 公司名称
        /// </summary>
        public string CompanyName { get; set; }
        /// <summary>
        /// 部门id
        /// </summary>
        public int? DepartmentId { get; set; }
        /// <summary>
        /// 部门名称
        /// </summary>
        public string DepartmentName { get; set; }
        /// <summary>
        /// 账号状态enum('Using','Stop','Deleted')
        /// </summary>
        public AccountStatus AccountStatus { get; set; }

        /// <summary>
        /// 员工头像
        /// </summary>
        public string Avatar { get; set; }

        /// <summary>
        /// 手机号
        /// </summary>
        public string Phone { get; set; }

        /// <summary>
        /// 家庭住址
        /// </summary>
        public string HomeAddress { get; set; }

        /// <summary>
        /// 身份证号
        /// </summary>
        public string IdCard { get; set; }
        /// <summary>
        /// 个人简介
        /// </summary>
        public string Introduction { get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        public Sex Sex { get; set; }

        /// <summary>
        /// 已婚
        /// </summary>
        public bool Married { get; set; }

        /// <summary>
        /// 紧急联系人
        /// </summary>
        public string EmergencyContact { get; set; }

        /// <summary>
        /// 紧急联系电话
        /// </summary>
        public string EmergencyPhone { get; set; }

        /// <summary>
        /// 家庭成员数
        /// </summary>
        public int FamilyNumber { get; set; }

        /// <summary>
        /// 子女数量
        /// </summary>
        public int ChildrenNumber { get; set; }
        private EducationDegree education;
        /// <summary>
        /// 教育程度
        /// </summary>
        public EducationDegree? Education
        {
            get { return this.education; }
            set { if (value.HasValue) { this.education = value.Value; } else { this.education = EducationDegree.None; } }
        }

        /// <summary>
        /// 学校名称
        /// </summary>
        public string School { get; set; }

        /// <summary>
        /// 毕业时间
        /// </summary>
        public DateTime? GraduationTime { get; set; }

        /// <summary>
        /// 工作年限
        /// </summary>
        public decimal WorkingYears { get; set; }

        /// <summary>
        /// 英语等级
        /// </summary>
        public EnglishLevel EnglishLevel { get; set; }

        /// <summary>
        /// 实习生
        /// </summary>
        public bool Trainee { get; set; }
        /// <summary>
        /// 岗位名称
        /// </summary>
        public string JobDuty { get; set; }
        /// <summary>
        /// 岗位名称Key
        /// </summary>
        public string JobDutyKey { get; set; }

        /// <summary>
        /// 职位名称
        /// </summary>
        public string JobTitle { get; set; }
        
        /// <summary>
        /// 职位名称Key
        /// </summary>
        public string JobTitleKey { get; set; }
        /// <summary>
        /// 职业等级
        /// </summary>
        public int JobLevel { get; set; }

        /// <summary>
        /// 入职时间
        /// </summary>
        public DateTime EmployedDate { get; set; }

        /// <summary>
        /// 离职时间
        /// </summary>
        public DateTime? LeaveTime { get; set; }

        /// <summary>
        /// 英文读能力级别
        /// </summary>
        public int EnglishReadLevel { get; set; }

        /// <summary>
        /// 英文写作能力级别
        /// </summary>
        public int EnglishWriteLevel { get; set; }

        /// <summary>
        /// 英文对话能力级别
        /// </summary>
        public int EnglishConversationLevel { get; set; }

        /// <summary>
        /// 薪资
        /// </summary>
        public decimal Salary { get; set; }

        /// <summary>
        /// 是否全职
        /// </summary>
        public bool FullTime { get; set; }

        /// <summary>
        /// 薪资卡编号
        /// </summary>
        public string SalaryCard { get; set; }

        /// <summary>
        /// 产假中
        /// </summary>
        public bool MaternityLeave { get; set; }

        /// <summary>
        /// 产假开始时间
        /// </summary>
        public DateTime? MaternityLeaveStartTime { get; set; }

        /// <summary>
        /// 产假结束时间
        /// </summary>
        public DateTime? MaternityLeaveEndTime { get; set; }

        /// <summary>
        /// 产假薪资
        /// </summary>
        public decimal? MaternityLeaveSalary { get; set; }

        /// <summary>
        /// 年假天数
        /// </summary>
        public int AnnualLeave { get; set; }

        /// <summary>
        /// 剩余年假天数
        /// </summary>
        public int SurplusAnnualLeave { get; set; }

        /// <summary>
        /// 外派中
        /// </summary>
        public bool Assignment { get; set; }

        /// <summary>
        /// 外派每日津贴
        /// </summary>
        public decimal? AssignmentSubsidy { get; set; }

        /// <summary>
        /// 外派开始时间
        /// </summary>
        public DateTime? AssignmentStartTime { get; set; }

        /// <summary>
        /// 外派结束时间
        /// </summary>
        public DateTime? AssignmentEndTime { get; set; }

        /// <summary>
        /// 喜好
        /// </summary>
        public string Preference { get; set; }

        /// <summary>
        /// 最后登录时间
        /// </summary>
        public DateTime LastLoginTime { get; set; }

        /// <summary>
        /// 当前登录时间
        /// </summary>
        public DateTime CurrentlyLoginTime { get; set; }

        /// <summary>
        /// 登录IP地址
        /// </summary>
        public string LogonIp { get; set; }

        /// <summary>
        /// 登录IP转换地址
        /// </summary>
        public string AddressIp { get; set; }

        /// <summary>
        /// 保证金金额
        /// </summary>
        public decimal? SecurityAmount { get; set; }

        /// <summary>
        /// 已付保证金金额
        /// </summary>
        public decimal? PaidSecurityAmount { get; set; }

        /// <summary>
        /// 子女教育专项附加扣除金额
        /// </summary>
        public decimal? ChildrenEducationCutAmount { get; set; }

        /// <summary>
        /// 子女教育专项开始日期
        /// </summary>
        public DateTime? ChildrenEducationStartDate { get; set; }

        /// <summary>
        /// 子女教育专项结束日期
        /// </summary>
        public DateTime? ChildrenEducationEndDate { get; set; }

        /// <summary>
        /// 继续教育专项附加扣除金额
        /// </summary>
        public decimal? ContinueEducationCutAmount { get; set; }

        /// <summary>
        /// 继续教育专项开始日期
        /// </summary>
        public DateTime? ContinueEducationStartDate { get; set; }

        /// <summary>
        /// 继续教育专项结束日期
        /// </summary>
        public DateTime? ContinueEducationEndDate { get; set; }

        /// <summary>
        /// 大病医疗专项附加扣除金额
        /// </summary>
        public decimal? MedicalCutAmount { get; set; }

        /// <summary>
        /// 住房贷款利息专项附加扣除金额
        /// </summary>
        public decimal? HomeLoanCutAmount { get; set; }

        /// <summary>
        /// 住房租金专项附加扣除金额
        /// </summary>
        public decimal? HomeRentCutAmount { get; set; }

        /// <summary>
        /// 赡养老人专项附加扣除金额
        /// </summary>
        public decimal? ElderlyCareCutAmount { get; set; }
    }
}

